var xmlTble;
// zTree 的参数配置，深入使用请参考 API 文档（setting 配置详解）
// 当前删除节点的路径
var pathRemove_xmlStructure = null ;
var setting = {
		   view: {
				addHoverDom: addHoverDom,
				removeHoverDom: removeHoverDom,
				selectedMulti: false,
				expandSpeed: 300 //设置树展开的动画速度，IE6下面没效果，
			},
		   edit: {
			   enable: true,
			   drag: {
					autoExpandTrigger: true,
					isCopy: true,
					isMove: true,
					prev: true,
					next: true,
					inner: true,
					autoOpenTime: 200
				},
				editNameSelectAll: false,
				showRemoveBtn: true,
				showRenameBtn:false,
				removeTitle:"删除"
			},
			data: {
				simpleData: {
					enable: true
				}
			},
			callback: {
				beforeRemove: beforeRemove,
//				beforeRename: zTreeBeforeRename ,
				onRemove: zTreeOnRemove
			}
   };
   // zTree 的数据属性，深入使用请参考 API 文档（zTreeNode 节点数据详解）
$(function(){
	xmlTable=diction.XML_CONFIG_TABLE;
	var xmlType=diction.XML_CONFIG_TYPE;
	var str='<option value ="">请选择模板</option>';
	if(xmlType&&xmlType.length>0){
		for(var i in xmlType ){
		 str +=' <option value ="'+xmlType[i].DICVALUE+'">'+xmlType[i].DICDESC+'</option>';	
		}		
		$('#'+tabId+' #templateType').html(str);
	}
	$('#'+tabId+' #templateType').on("change",function(){
		createXmlStructureTables();		
	});
	
	$('#'+tabId+' input').iCheck({
		checkboxClass: 'icheckbox_square-blue',
	    radioClass: 'iradio_square-blue',
	    increaseArea: '20%' // optional
	});
	//获取文件数据,加载树
	$('#'+tabId+' #xmlTemplateUpload').uploadifive({
		'uploadScript' : contextPath + '/xmlStructure/filesUpload.dhc',
        'height': 30,
        'width' :140,
        'auto'  : true,//是否自动开始
        'uploadLimit' : 100, //一次同步上传的文件数目     
        'fileSizeLimit' : '500MB', //单个文件大小，0为无限制，可接受KB,MB,GB等单位的字符串值     
        'queueSizeLimit' : 100, //队列中同时存在的文件个数限制
        'fileObjName':'file',
        'removeCompleted': true,  //是否完成后移除序列，默认为true
        'removeTimeout' : '1',  //上传完成后队列多长时间后消失。默认 3秒    需要：removeCompleted : true,时使用
        'progressData' :'percentage',//设置上传进度显示方式，percentage显示上传百分比，speed显示上传速度
        'buttonText' : '<i class="fa fa-folder-open fa-lg"></i>&nbsp;&nbsp;选择模版文件',
        'buttonClass': 'uploadifyH5_btn',
        'fileType' : '*.xls; *.xlsx; *.xml; *.dbf',//允许上传的文件格式
        'multi'    : true,//是否支持多文件上传
        'method'   :'post',//提交方式
        'debug':false,
        //当点击文件队列中文件的关闭按钮或点击取消上传时触发
        'onCancel': function(){},
      	//返回一个错误，选择文件的时候触发  
        'onSelectError':  function(){
             drgUI.error('文件上传失败！');
        },
      	//检测FLASH失败调用  
        'onFallback':function(){  
            drgUI.error('浏览器检测不到兼容版本的HTML5');
        }, 
        'onUploadError' : uploadify_onUploadError,
        'onQueueComplete':function(queueData){
			$.post(contextPath + "/xmlStructure/readJson.dhc",function(data){
				if(data.data !=null)
				{
					var zNodes = eval('(' + data.data + ')');
					
					zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, zNodes);
				}
			})
        }
    });
	
	createXmlStructureTables(); //构建右边xml配置表信息
	
	$('#'+tabId+' #xmlDataFile').uploadifive({
		'uploadScript' : contextPath + '/xmlStructure/filesUpload.dhc',
        'height': 30,
        'width' :140,
        'auto'  : true,//是否自动开始
        'uploadLimit' : 100, //一次同步上传的文件数目     
        'fileSizeLimit' : '500MB', //单个文件大小，0为无限制，可接受KB,MB,GB等单位的字符串值     
        'queueSizeLimit' : 100, //队列中同时存在的文件个数限制
        'fileObjName':'file',
        'removeCompleted': true,  //是否完成后移除序列，默认为true
        'removeTimeout' : '1',  //上传完成后队列多长时间后消失。默认 3秒    需要：removeCompleted : true,时使用
        'progressData' :'percentage',//设置上传进度显示方式，percentage显示上传百分比，speed显示上传速度
        'buttonText' : '<i class="fa fa-folder-open fa-lg"></i>&nbsp;&nbsp;选择数据文件',
        'buttonClass': 'uploadifyH5_btn',
        'fileTypeDesc' : '支持格式:xls/xlsx.', //可选文件的描述。这个值出现在文件浏览窗口中的文件类型下拉选项中。（chrome下不支持，会显示为'自定义文件',ie and firefox下可显示描述）
        'fileTypeExts' : '*.xls; *.xlsx; *.xml; *.dbf',//允许上传的文件格式
        'multi'    : true,//是否支持多文件上传
        'method'   :'post',//提交方式
        'debug':false,
        //当点击文件队列中文件的关闭按钮或点击取消上传时触发
        'onCancel': function(){},
      	//返回一个错误，选择文件的时候触发  
        'onSelectError':  function(){
             drgUI.error('文件上传失败！');
        },
      	//检测FLASH失败调用  
        'onFallback':function(){  
            drgUI.error('浏览器检测不到兼容版本的HTML5');
        }, 
        'onUploadError' : uploadify_onUploadError,
        'onQueueComplete':function(queueData){
        	$.get(contextPath + '/xmlStructure/getXmlInfoByStructure.dhc').done(function(result){
        		if(result.success ){
		 			drgUI.success('获取数据成功');
    			}
    		});
    	}
    });
	
	// 上传按钮小手悬浮
	$("[type=file]").css("cursor","pointer");
})


//  	function showRemoveBtn(treeId, treeNode) {
//  			return !treeNode.isFirstNode;
//  	}
//
//  	function showRenameBtn(treeId, treeNode) {
//  		return !treeNode.isLastNode;
//  	}
		
   function removeHoverDom(treeId, treeNode) {
	   $("#addBtn_"+treeNode.tId).unbind().remove();
	   $("#diyBtn_"+treeNode.tId).unbind().remove();
	};
	
	function expandNode(type){
		var zTree = $.fn.zTree.getZTreeObj("treeDemo");
		if (type == "expandAll" && zTree!=null) {
			zTree.expandAll(true);
		} else if (type == "collapseAll" && zTree!=null) {
			zTree.expandAll(false);
		}
	}
	
	
	//添加按钮
	function addHoverDom(treeId, treeNode) {
		var now = new Date();
		//添加按钮
//		var sObj = $("#" + treeNode.tId + "_span");
//		if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
//		var addStr = "<span class='button add' id='addBtn_" + treeNode.tId
//			+ "' title='添加' onfocus='this.blur();'></span>";
//		sObj.after(addStr);
//		var btn = $("#addBtn_"+treeNode.tId);
//		if (btn) btn.bind("click", function(){
//			var zTree = $.fn.zTree.getZTreeObj("treeDemo");
//			zTree.addNodes(treeNode, {id:now.getTime(), pId:treeNode.id, name:"new_node" + now.getTime()});
//			return false;
//		});
		//属性按钮
		var aObj = $("#" + treeNode.tId + '_a');
		if ($("#diyBtn_"+treeNode.tId).length>0) return;
//		var editStr = "<span class='demoIcon' id='diyBtn_" +treeNode.tId+ "' title='属性' onfocus='this.blur();'></span>";
		var editStr = "<span class='demoIcon' id='diyBtn_" +treeNode.tId+ "' title='属性' onfocus='this.blur();'><span class='button icon03'></span></span>";
		aObj.append(editStr);
		var btn = $("#diyBtn_"+treeNode.tId);
		if (btn) btn.bind("click", function(){
			findNodeConfigInfoByPath(treeId, treeNode)
		});
	};
	
	//删除提示
	function beforeRemove(treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj("treeDemo");
		zTree.selectNode(treeNode);
		pathRemove_xmlStructure =  getPathByNode(treeNode) ;
		return confirm("确认删除 节点 -- " + treeNode.name + " 吗？");
	}
	
	//重名限制
	function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
	   var reg = new RegExp("[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*");//变量名正则表达式
	   if(!reg.test(newName)){
			drgUI.warning('变量名不合法');
		   return false;
	   }
		return true;
	}
	
	function zTreeOnRemove(event, treeId, treeNode) {
		$.post(contextPath + "/xmlStructure/nodeInfoRemove.dhc","nodeId="+pathRemove_xmlStructure).done(function(result){
			if(result.success) {
				 drgUI.success('删除成功！');
				createXmlStructureTables(); 
			} else {
				 drgUI.error('删除失败！');
			}
		})
	}
	
function xmlNodeProperty(treeId, treeNode,nodeConfigData){
	var initTable = treeNode.table;//数据库数据表
	var initFieldCode = treeNode.fieldCode;//字段代码
	var initDataTypeCode = treeNode.dataTypeCode;
	var initataFormatCode = treeNode.dataFormatCode;
	var initIsSameNode = treeNode.isSameNode;
	var initDataScale = treeNode.dataScale;
	var initPType = treeNode.pType;
	var initMapPosition = treeNode.mapPosition;
	var initNpName = treeNode.npName;
	var initPropetyPosition = treeNode.propetyPosition;
	var initValueType = treeNode.valueType;
	
	
	$.post(contextPath+"/pages/common/top-dialog-buttons.jsp").done(function(data){
		var dialog  = $(data);
		dialog.find(".modal-title").html("节点属性");
		dialog.find(".modal-dialog").css("width", "500px");
		dialog.find(".echartscq").css("width", "400px");
		dialog.find(".echartscq").css("height", "300px");
		
		var str = '';
		str += '<form class="form-horizontal page_form">';
		str += '	<div class="form-group">';
		str += '		<label class="col-lg-4 control-label" for="name">节点代码:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="text" class="form-control" name="nodeCode" value = "'+treeNode.name+'" readonly="readonly">';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group">';
		str += '		<label class="col-lg-4 control-label" for="name">信息所属:</label>';
		str += '		<div class="col-lg-8">';
		str += '			<select class="form-control tableName" id="xmltable_id">';
		str += '			</select>';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="infoDesc">';
		str += '		<label class="col-lg-4 control-label" for="name">信息描述:</label>';
		str += '		<div class="col-lg-8 nodeDescDiv">';
		str += '			<select class="form-control" id = "nodeDesc">';
		str += '				<option value = "">请选择</option>';
		str += '			</select>';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="diaOrOperType" style="display:none">';
		str += '		<label class="col-lg-4 control-label" for="name">信息类型:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="radio" name="typeing" value="M"/>主要&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="typeing" value="O"/>其它';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="isSameNode" style="display:none">';
		str += '		<label class="col-lg-4 control-label" for="name">节点是否相同:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="radio" name="sameNode" value="1"/>是&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="sameNode" checked value="0"/>否';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="mapPositionBlock" style="display:none">';
		str += '		<label class="col-lg-4 control-label" for="name">映射位置:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="radio" name="mapPosition" value="n"/>节点&nbsp;&nbsp;<input type="text" name="node_Name" style = "width:75px"  disabled="disabled" placeholder="节点名称"/>&nbsp;&nbsp;<input type="radio" name="mapPosition" value="p"/>属性&nbsp;&nbsp;<input type="text" name="propertyName" style = "width:75px"  disabled="disabled" placeholder="属性名称"/>';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="propertyPositionBlock" style="display:none">';
		str += '		<label class="col-lg-4 control-label" for="name">属性位置:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="radio" name="propertyPosition" value="p"/>父节点&nbsp;&nbsp;<input type="radio" name="propertyPosition" value="t"/>当前节点';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="valueTypeBlock" style="display:none">';
		str += '		<label class="col-lg-4 control-label" for="name">值类型:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="radio" name="valueType" value="c"/>编码&nbsp;&nbsp;<input type="radio" name="valueType" value="d"/>描述';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group" id="propertyBlock" style="display:none">';
		str += '		<label class="col-lg-4 control-label" for="name">属性名:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="text" name="propertyName"/>';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group"  id="dataTypeBlock">';
		str += '		<label class="col-lg-4 control-label" for="name">数据类型:</label>';
		str += '		<div class="col-lg-8">';
		str += '		    <input type="text" class="form-control" name="dataType" readonly="readonly">';
		str += '		</div>';
		str += '	</div>';
		str += '	<div class="form-group"  id="dataFormatBlock">';
		str += '		<label class="col-lg-4 control-label" for="name">数据格式:</label>';
		str += '		<div class="col-lg-8">';
		str += '			<select class="form-control dataFormat" >';
		str += '			</select>';
		str += '		</div>';
		str += '	</div>';
		dialog.find(".echartscq").html(str);	
		dialog.find(".tableName").off("change");
		dialog.find(".tableName").on("change",function(){
			//清除 信息描述
			dialog.find(".nodeDescDiv").empty();
			dialog.find(".nodeDescDiv").append('<select class="form-control" id = "nodeDesc" ><option value = "">请选择</option></select>');
			//清除 数据类型
			dialog.find("input[name='dataType']").val ("");
			dialog.find("input[name='dataType']").removeAttr("dataTypeCode");
			//清除 数据格式
			dialog.find(".dataFormat").empty();
			dialog.find(".dataFormat").append('<option value = "">请选择</option>');
			dialog.find("input[name='sameNode'][value='0']").attr("checked",true);//是否相同 默认选中否
					
			dialog.find("#diaOrOperType").css("display","none");//隐藏信息类型
			dialog.find("#mapPositionBlock").css("display","none");//隐藏映射位置
			dialog.find("#propertyPositionBlock").css("display","none");//隐藏属性位置
			dialog.find("#valueTypeBlock").css("display","none");//隐藏值类型
			dialog.find("#propertyBlock").css("display","none");//隐藏属性名
			dialog.find("#isSameNode").css("display","none");//隐藏是否相同
			
			//默认值全部去掉
			dialog.find("input[name='typeing']").attr("checked",false);//信息类型
			dialog.find("input[name='mapPosition']").attr("checked",false);//映射位置
			dialog.find("input[name='valueType']").attr("checked",false);//值类型
			dialog.find("input[name='propertyPosition']").attr("checked",false);//属性位置
			dialog.find("input[name='node_Name']").val("");//置空
			dialog.find("input[name='propertyName']").val("");//置空
			
			var tableName = $(this).find("option:selected").val();
			if(tableName != "T_COSTSUB")
			{
				dialog.find("#dataTypeBlock").css("display","block");//显示数据类型模块
				dialog.find("#dataFormatBlock").css("display","block");//显示数据格式模块
				dialog.find("#infoDesc").css("display","block");//显示信息描述区域
				
				$.post(contextPath + "/xmlStructure/getTableStructure.dhc", {tableName:tableName}).done(function(data){
					var nodeDesc = "";
					var feild = data.data;
					var l = feild.length;
					for(var i=0;i<l;i++)
					{
						nodeDesc += "<option value = '"+feild[i].COLUMN_NAME+"' dataScale='"+feild[i].DATA_SCALE+"' datatype = '"+feild[i].DATA_TYPE+"'>"+feild[i].COMMENTS+"</option>";
					}
					dialog.find("#nodeDesc").append(nodeDesc);
					
					
					dialog.find("#nodeDesc").selectpicker("destroy");
					dialog.find("#nodeDesc").selectpicker({
						width : 241,// select框宽度
						actionsBox : true,// 全选和取消全选
						liveSearch : true,// 搜索框
						selectAllText : '全选',// selected="selected",
						deselectAllText : '取消全选',
						noneSelectedText : '请选择',
						countSelectedText : "已选中{0}个",// 选中的大于2个时，提示
						selectedTextFormat : "count > 2"
					});
					if(tableName == "MR_OPERATION")
					{//手术一直显示
						dialog.find("#isSameNode").css("display","block");
					}
					dialog.find("#nodeDesc").on('changed.bs.select', function(e) {
						dialog.find(".dataFormat").empty();
						dialog.find(".dataFormat").append('<option value = "">请选择</option>');
						var tableName = dialog.find(".tableName").val();
						var nodeCode = $(this).find("option:selected").val();
						var dataType = $(this).find("option:selected").attr("datatype");
						var dataTypeDesc = "";
						var dataTypeCode = "";
						var dataFotmat = "";
						if(nodeCode != ""){
							if(tableName == "MR_OPERATION")
							{//手术一直显示
								dialog.find("#isSameNode").css("display","block");
								if("POTYPE" == nodeCode)
								{
									dialog.find("#diaOrOperType").css("display","block");//显示是否相同
								}
								else
								{
									dialog.find("#diaOrOperType").css("display","none");//隐藏是否相同
								}
							}
							else if(tableName == "MR_DIAGNOSE")
							{
								if("PDTYPE" == nodeCode)
								{
									dialog.find("#diaOrOperType").css("display","block");//显示是否相同
									dialog.find("#isSameNode").css("display","block");//显示是否相同
								}
								else
								{
									dialog.find("#diaOrOperType").css("display","none");//隐藏是否相同
									dialog.find("#isSameNode").css("display","none");//隐藏是否相同
								}
							}
							else
							{
								dialog.find("#diaOrOperType").css("display","none");//隐藏是否相同
								dialog.find("#isSameNode").css("display","none");//隐藏是否相同
							}
							switch(dataType){
							case 'DATE':
								dataTypeCode = "date";
								dataTypeDesc = "日期";
								dataFotmat = "<option value = 'd'>yyyy-MM-dd</option><option value = 'dt'>yyyy-MM-dd HH:mm:ss</option>";
								break;
							case 'NUMBER':
								dataTypeCode = "number";
								dataTypeDesc = "数值";
								dataFotmat = "<option value = 'i'>#</option><option value = 'f'>#.##</option>";
								break;
								default:
									dataTypeCode = "string";
									dataFotmat = "<option value = 's'>*</option>";
									dataTypeDesc = "字符串";
							}
							dialog.find("input[name='dataType']").val(dataTypeDesc);
							dialog.find("input[name='dataType']").attr("dataTypeCode",dataTypeCode);
							dialog.find(".dataFormat").append(dataFotmat);
							if(initataFormatCode != '' && initataFormatCode != null){
								//默认加载已经选择的表信息
								dialog.find(".dataFormat option[value="+initataFormatCode+"]").attr("selected", true);
							}
						}
					})
					if(initFieldCode != '' && initFieldCode != null){
						//默认加载已经选择的表信息
						dialog.find("#nodeDesc option[value="+initFieldCode+"]").attr("selected", true);
						dialog.find("#nodeDesc").change();
					}
				})
			}else{
				dialog.find("#isSameNode").css("display","block");//显示是否重复区域
				dialog.find("#infoDesc").css("display","block");//显示信息描述区域
				dialog.find("#dataTypeBlock").css("display","none");//隐藏数据类型模块
				dialog.find("#dataFormatBlock").css("display","none");//隐藏数据格式模块
				$.post(contextPath + "/xmlStructure/getTableStructure.dhc", {tableName:tableName}).done(function(data){
					var nodeDesc = "";
					var feild = data.data;
					var l = feild.length;
					for(var i=0;i<l;i++)
					{
						nodeDesc += "<option value = '"+feild[i].COST_SUB_CODE+"' >"+feild[i].CS_ALIAS+"</option>";
					}
					dialog.find("#nodeDesc").append(nodeDesc);
					dialog.find("#nodeDesc").selectpicker("destroy");
					dialog.find("#nodeDesc").selectpicker({
						width : 241,// select框宽度
						actionsBox : true,// 全选和取消全选
						liveSearch : true,// 搜索框
						selectAllText : '全选',// selected="selected",
						deselectAllText : '取消全选',
						noneSelectedText : '请选择',
						countSelectedText : "已选中{0}个",// 选中的大于2个时，提示
						selectedTextFormat : "count > 2"

					});
					if(initFieldCode != '' && initFieldCode != null){
						//默认加载已经选择的表信息
						dialog.find("#nodeDesc option[value="+initFieldCode+"]").attr("selected", true);
					}
					
				})
			}
		})
		var str='<option value ="">请选择表</option>';
		if(xmlTable&&xmlTable.length>0){
			for(var i in xmlTable ){
			 str +=' <option value ="'+xmlTable[i].DICVALUE+'">'+xmlTable[i].DICDESC+'</option>';	
			}		
			dialog.find('#xmltable_id').html(str);
		}
		dialog.find("#dataTypeBlock input[name='dataType']").on("change",function(){
			alert(1)
		})
		if("数值"==dialog.find("input[name='dataType']").val()){
		   dialog.find(".dataFormat").val("i")	;
		}
		dialog.find("input[name='sameNode']").off("change");
		dialog.find("input[name='sameNode']").on("change",function(){//当费用表节点重复时，类型默认选其他
			var radioValue=dialog.find("input[name='sameNode']:checked").val();
			var tableName = dialog.find(".tableName").val();
			if(radioValue=="1"&&tableName=="T_COSTSUB"){//节点重复 映射位置(节点|属性[父级|子级]) 映射类别(编码|名称)
				dialog.find("#infoDesc").css("display","none");//隐藏信息描述区域
				dialog.find("#mapPositionBlock").css("display","block");//显示映射位置区域
				dialog.find("#valueTypeBlock").css("display","block");//显示值类型区域
				//清空值 节点重复
				dialog.find("#nodeDesc option[text='请选择']").attr("selected", true);
			}else if(radioValue=="0"&&tableName=="T_COSTSUB"){//显示信息描述
				dialog.find("#infoDesc").css("display","block");//显示信息描述区域
				dialog.find("#mapPositionBlock").css("display","none");//隐藏映射位置区域
				dialog.find("#valueTypeBlock").css("display","none");//隐藏值类型区域
				dialog.find("#propertyPositionBlock").css("display","none");//隐藏属性位置区域
				//清空值 节点不重复时
				dialog.find("input[name='node_Name']").val("");//节点名称文本框置空
				dialog.find("input[name='propertyName']").val("");//属性名称文本框置空
				dialog.find("input[name='mapPosition']").removeAttr("checked");//映射位置 取消选中
				dialog.find("input[name='valueType']").removeAttr("checked");//值类型 取消选中
				dialog.find("input[name='node_Name']").attr("disabled","disabled");//节点名称文本框不可用
				dialog.find("input[name='propertyName']").attr("disabled","disabled");//属性名称文本框可用
			}
		})
		dialog.find("input[name='mapPosition']").off("change");
		dialog.find("input[name='mapPosition']").on("change",function(){//映射位置 当映射位置为属性时显示属性的位置区域
			var radioValue=dialog.find("input[name='mapPosition']:checked").val();
			if(radioValue=="p"){//映射位置 当映射位置为属性时显示属性的位置区域
				dialog.find("#propertyPositionBlock").css("display","block");//显示属性位置
				dialog.find("input[name='node_Name']").attr("disabled","disabled");//节点名称文本框不可用
				dialog.find("input[name='node_Name']").val("");//节点名称文本框置空
				dialog.find("input[name='propertyName']").removeAttr("disabled");//属性名称文本框可用
			}else{//显示信息描述
				dialog.find("#propertyPositionBlock").css("display","none");//显示属性位置
				dialog.find("input[name='node_Name']").removeAttr("disabled");//节点名称文本框可用
				dialog.find("input[name='propertyName']").attr("disabled","disabled");//属性名称文本框可用
				dialog.find("input[name='propertyName']").val("");//属性名称文本框置空
			}
		})
		
		
		dialog.find("input[name='costCodeMapType']").off("change");
		dialog.find("input[name='costCodeMapType']").on("change",function(){
			var radioValue=dialog.find("input[name='costCodeMapType']:checked").val();
			if(radioValue == "2"){
				dialog.find("#propertyBlock").css("display","block");
			}
			else{
				dialog.find("#propertyBlock").css("display","none");
			}
		})
		
		if(initTable != '' && initTable != null){
			//默认加载已经选择的表信息
			dialog.find(".tableName option[value="+initTable+"]").attr("selected", true);
			dialog.find(".tableName").change();
		}
		
		if(initPType != '' && initPType != null){
			//默认加载信息类型
			dialog.find("input[name='typeing'][value='"+initPType+"']").attr("checked",true);//信息类型
		}
		
		if(initIsSameNode != '' && initIsSameNode != null){
			//默认加载已经选择的表信息
			dialog.find("input[name='sameNode'][value='"+initIsSameNode+"']").attr("checked",true);//是否相同 
			if(initTable != null&&initTable=="T_COSTSUB" && initIsSameNode =="1" )
			{
				dialog.find("#infoDesc").css("display","none");//隐藏信息描述区域
				dialog.find("#mapPositionBlock").css("display","block");//隐藏映射位置区域
				dialog.find("#valueTypeBlock").css("display","block");//隐藏值类型区域
				
				if(initMapPosition != '' && initMapPosition != null){
					dialog.find("input[name='mapPosition'][value='"+initMapPosition+"']").attr("checked",true);//映射位置
					if(initMapPosition=='n'){//节点
						dialog.find("#propertyPositionBlock").css("display","none");//隐藏属性位置区域
						dialog.find("input[name='node_Name']").removeAttr("disabled");//移除不可用属性
						if(initNpName != '' && initNpName != null){
							dialog.find("input[name='node_Name']").val(initNpName);//节点名称
						}
					}else if(initMapPosition=='p'){//属性
						dialog.find("#propertyPositionBlock").css("display","block");//显示属性位置区域
						dialog.find("input[name='propertyName']").removeAttr("disabled");//移除不可用属性
						if(initNpName != '' && initNpName != null){
							dialog.find("input[name='propertyName']").val(initNpName);//属性名称
						}
					}

					
				}
				if(initValueType != '' && initValueType != null){
					dialog.find("input[name='valueType'][value='"+initValueType+"']").attr("checked",true);//是否相同
				}
				if(initPropetyPosition != '' && initPropetyPosition != null){
					dialog.find("input[name='propertyPosition'][value='"+initPropetyPosition+"']").attr("checked",true);//是否相同
				}
			}
			else if(initTable != null&&initTable=="T_COSTSUB" && initIsSameNode =="0" )
			{
				dialog.find("#infoDesc").css("display","block");//显示信息描述区域
			}
		}		
		dialog.find('#save').on('click', function(){
			var table = dialog.find(".tableName option:selected").val();//数据库表
			var tableName =  dialog.find(".tableName option:selected").text();//数据库表名
			var fieldCode = dialog.find("#nodeDesc option:selected").val();//字段代码
			var fieldDesc = dialog.find("#nodeDesc option:selected").text();//字段描述
			var dataScale =  dialog.find("#nodeDesc option:selected").attr("dataScale");//字段小数点保留位数
			var dataTypeCode = dialog.find("input[name='dataType']").attr("dataTypeCode");//数据类型代码
			var dataFormatCode = dialog.find(".dataFormat option:selected").val();//数据格式代码
			var pType= dialog.find('input:radio[name="typeing"]:checked').val();//信息类型
			var sameNode= dialog.find('input:radio[name="sameNode"]:checked').val();//节点是否相同
			var mapPosition =  dialog.find('input:radio[name="mapPosition"]:checked').val();//映射位置
			var npName =  "";//节点或者属性名称
			if("n" == mapPosition){//取节点名称
				npName = dialog.find("input[name='node_Name']").val();//节点名称
				dataTypeCode = "number";
				dataFormatCode = "f";
				dataScale = "2";
			}else if("p" == mapPosition){//取属性名称
				npName = dialog.find("input[name='propertyName']").val();//费用名称
				dataTypeCode = "number";
				dataFormatCode = "f";
				dataScale = "2";
			}
			var propetyPosition = dialog.find('input:radio[name="propertyPosition"]:checked').val();//属性位置
			var valueType = dialog.find('input:radio[name="valueType"]:checked').val();//值类型
			treeNode.table = table;
			treeNode.tableName = tableName;
			treeNode.fieldCode = fieldCode;
			treeNode.fieldDesc = fieldDesc;
			treeNode.dataScale = dataScale;
			treeNode.dataTypeCode = dataTypeCode;
			treeNode.dataFormatCode = dataFormatCode;
			treeNode.pType = pType;
			treeNode.isSameNode = sameNode;
			treeNode.mapPosition = mapPosition;
			treeNode.npName = npName;
			treeNode.propetyPosition = propetyPosition;
			treeNode.valueType = valueType;
			
			if(tableName != "" && fieldCode != ""){
				treeNode.iconSkin = "drgs";
			}
			saveNodeConfigInfo(treeNode);
			dialog.trigger('complete');
		}).end().modal({
			keyboard : false
		}).on({
			'hidden.bs.modal' : function() {
				dialog.remove();
			},
			'complete' : function() {
				dialog.modal('hide');
				drgUI.success("添加成功");
				//loadSystemConfig();
            }
		});
	});
}


function getXmlInfoByStructure(){
	 $.get(contextPath + '/xmlStructure/getXmlInfoByStructure.dhc').done(function(result){
         if(result.success ){
 			 drgUI.success('获取数据成功！');
        }
 });
}

/**
 * 根据节点配置路径查询节点信息
 * @@param path
 * @@param callBack 回调函数
 * @void
 * @ Discription:
 * @xmlStructure.js
 */
function findNodeConfigInfoByPath(treeId,treeNode){
	var path = getPathByNode(treeNode) ;
	$.post(contextPath + '/xmlStructure/findNodeConfigInfoByPath.dhc',{"path":path}).done(function(result){
		var data = result.data[0] ;
		if(data) {
			treeNode.table = data.TABLE_CODE;//数据库数据表
			treeNode.fieldCode = data.FIELD_CODE ;//字段代码
			treeNode.dataTypeCode = data.DATA_TYPE_CODE;
			treeNode.dataFormatCode = data.DATA_FORMAT_CODE ;
			treeNode.isSameNode = data.ISSAMENODE ;
			treeNode.dataScale=  data.DATA_SCALE ;
			treeNode.pType = data.PTYPE ;
			treeNode.mapPosition=  data.MAP_POSITION ;
			treeNode.npName = data.NP_NAME ;
			treeNode.propetyPosition = data.PROPERTY_POSITION ;
			treeNode.valueType = data.VALUE_TYPE ;
		}
		xmlNodeProperty(treeId, treeNode,data) ;
	});
}

/**
 * 保存节点信息
 * @@param node
 * @void
 * @ Discription:
 * @xmlStructure.js
 */
function saveNodeConfigInfo(node){ 
	var templateType = $('#'+tabId+' #templateType option:selected').val();//选中的值
	if(templateType == "select"){
		drgUI.warning("请选择模版类型");
		return;
	}
	var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
	if(treeObj == null){
		drgUI.warning("请选择模版文件并配置");
		return;
	}
	var xmlPath = getPathByNode(node);
	var dataFormatCode=node.dataFormatCode;
	var dataTypeCode=node.dataTypeCode;
	var dataScale="";
	if("f"==dataFormatCode){
		dataScale="2"
	}else if("i"==dataFormatCode){
		dataScale="0"
	}else{
		if(dataTypeCode=="number"){
			dataFormatCode="i";
			dataScale="0"
		}
	}
	if("number"==dataFormatCode &&""==dataFormatCode ){
	 drgUI.warning("请选择数据格式！");
	 return ;
	}
	
	$.post(contextPath + "/xmlStructure/saveXml.dhc",
			"nodeId="+node.tId+templateType+
			"&name="+node.name+
			"&level="+node.level+
			"&xpath="+xmlPath+
			"&parentId="+node.parentTId+
			"&dataTypeCode="+node.dataTypeCode+
			"&dataFormatCode="+dataFormatCode+
			"&pType="+(typeof(node.pType) == "undefined" ? "" : node.pType)+
			"&isSameNode="+(typeof(node.isSameNode) == "undefined" ? "" : node.isSameNode)+
			"&table="+node.table+
			"&tableName="+node.tableName+
			"&fieldDesc="+node.fieldDesc+
			"&fieldCode="+node.fieldCode+
			"&dataScale="+dataScale+
			"&mapPosition="+(typeof(node.mapPosition) == "undefined" || node.mapPosition == "null" ? "" : node.mapPosition)+
			"&npName="+node.npName+
			"&propetyPosition="+(typeof(node.propetyPosition) == "undefined" || node.propetyPosition == "null" ? "" : node.propetyPosition)+
			"&valueType="+(typeof(node.valueType) == "undefined" || node.valueType == "null" ? "" : node.valueType)+
			"&templateType="+templateType
			).done(function(result){
				if(result.data == "")
				{
					createXmlStructureTables();
					drgUI.success("保存成功");
				}
				else
				{
					drgUI.error("保存失败!");
				}
	})

}

/**
 * 获取全路径
 * @param nodes
 * @returns
 */
function getPathByNode(nodes){
	var treePath = "";
	var xmlPath = getNameByNode(nodes,"");	
	function getNameByNode(node,xpath){
		if(node.parentTId != null){
			var nodePar = node.getParentNode();
			var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
			
			var nodeId = node.tId;
			var nodeName =  node.name;
			var nodeLevel = node.level;
			var parentId = node.parentTId;
	
			//过滤同一等级相同标签的node集合
			var nodeFils = treeObj.getNodesByFilter(nodeFilter); // 查找节点集合
			function nodeFilter(node) {
			    return (node.name == nodeName && node.level == nodeLevel && node.parentTId == parentId);
			}
			
			/**
			 * 添加xml读取时的路径表达式
			 */
			if(nodeFils.length == 1){
				treePath = "/"+node.name+xpath;	
			}else{
				for(var i=0;i<nodeFils.length;i++){
					if((nodeFils[i].tId) == nodeId){
						treePath = "/"+node.name+"["+(i+1)+"]"+xpath;	
						break;
					}
				}
			}
			
				getNameByNode(nodePar,treePath);
		}else{
			treePath = "/"+node.name+xpath;	
		}
		return treePath;
	}
	return xmlPath;
	
}


/**
 * 过滤所有的节点，只返回有数据库表结构映射的节点
 * @param node
 * @returns
 */
function mrInfoFilter(node) {
    return ((node.table != "" && node.table != null && node.fieldCode != "" && node.fieldCode != null)||(node.mapPosition != ""&& node.mapPosition != null)||(node.isSameNode != ""&& node.isSameNode != null));
}
/**
 * 生成右边的表
 * @returns
 */
function createXmlStructureTables(){
	var templateType = $('#'+tabId+' #templateType').val();//选中的值
	$.post(contextPath+"/xmlStructure/findXMLTable.dhc",{templateType:templateType}).done(function(result){
	    if(result.success){
	    	var data=result.data;
	    	var columns=[
//		                   {
//		                	   "title":"节点ID",
//		                	   "data":"nodeId"
//		                   },
		                   {
		                	   "title":"节点名称",
		                	   "data":"nodeName"
		                   },
		                   {
		                	   "title":"父节点",
		                	   "data":"parentId"
		                   },
		                   {
		                	   "title":"节点级别",
		                	   "data":"nodeLevel"
		                   },
		                   {
		                	   "title":"数据类型",
		                	   "data":"dataType"
		                   },
		                   {
		                	   "title":"数据格式",
		                	   "data":"dataFormat"
		                   },
		                   {
		                	   "title":"诊断及手术类型",
		                	   "data":"pType"
		                   },
		                   {
		                	   "title":"表名称",
		                	   "data":"tableCode"
		                   },
		                   {
		                	   "title":"表描述",
		                	   "data":"tableDesc"
		                   },
		                   {
		                	   "title":"字段名称",
		                	   "data":"fieldCode"
		                   },
		                   {
		                	   "title":"字段描述",
		                	   "data":"fieldDesc"
		                   }
		                  ];
	    	var paramsDataTables={
	    			stataSave:true,order:[[ 3, "desc" ]],
	    			scrollX:true,
	    			scrollY:'400px',
	    			autoWidth : false
	    	
	    	};
	    	
	    	$('#'+tabId+' #xmlStructure_Table').dataTableBasic(columns,data,paramsDataTables);
		}
	})
}
